This invention relates to the field of data transfer protocols and, more particularly, relates to simple data transfer protocols capable of being used to facilitate communication between a wide variety of consumer devices.
Data transfer protocols are used to facilitate communication between electronic devices by providing a common set of rules by which data may be exchanged between one device and another. A universal protocol could theoretically allow one device to communicate with any other device, from simple devices like the lights in a room to complex devices like personal computers. However, to approach such an ideal, the protocol itself has to be usable with at least a significant proportion of the devices. Different types of devices have different characteristics such as microprocessor abilities, free memory, and accompanying costs. In addition, consumer devices are produced by a wide variety of manufacturers. Coordination and cooperation in interfacing a wide variety of electronic devices is very difficult. Thus, the need exists for a universal protocol that may be implemented by a large variety of device types produced by various manufacturers.
Many times in the past, manufacturers have made attempts to allow consumer level devices to be able to communicate meaningful data or commands to one another. Many protocols define data links between standard small devices. However, this also meant that usually the xe2x80x9cstandardxe2x80x9d became only a standard for that genre of device. Further, while these protocols provide a data link, they do not provide a standard method to allow simple relevant information transfer between two small devices. For example, a typical pager cannot send control information to any particular cellular telephone requesting the cellular telephone to initiate a call to a certain number; a xe2x80x9ccaller-IDxe2x80x9d box is not able to instruct a PDA to display all the contact information for the person who is calling; and a PDA cannot print or fax (without a modem or special drivers). Thus, a need exists for a universal protocol which can provide a simple data link between a wide variety of devices.
The present invention includes a protocol and a method for facilitating communication between various electronic devices and the sharing of features, functionality and information between these devices. In general, the present invention is directed towards a protocol by which one device (the xe2x80x9cclient devicexe2x80x9d) can discover what services are offered by another device (the xe2x80x9cserver devicexe2x80x9d). Utilizing this protocol, the client device can take advantage of the services of the server device. Advantageously, the present invention is simple enough to be used by nearly any type of electronic device, but at the same time it is robust enough to allow a user to author high-level applications utilizing multiple different services available from multiple devices without requiring the user to have any knowledge of any particular device interface or how the device works. The present invention is capable of use by a wide range of devices including, but not limited to, pagers, cellular telephones, wired telephones, caller-ID (xe2x80x9cCIDxe2x80x9d) boxes, printers, facsimile machines, personal data assistant (xe2x80x9cPDAxe2x80x9d), personal computers, information sources, time pieces, stereo equipment, video equipment, thermostats, weather stations, doors, lights, and security systems. The present invention allows these devices to interact, by standardizing many of the normal tasks associated with these devices. Convergence Corporation, the assignee of the present invention, has developed a universal protocol, referred to as the Service Discovery Transport Protocol (xe2x80x9cSDTPxe2x80x9d), which embodies many of the aspects of this invention. Thus, embodiments of the present invention include a universal protocol that can be implement in a wide variety of device types produced by various manufacturers. In addition, embodiments of the present invention provide a simple data link between these devices.
The operation of a protocol implementing aspects of the present invention actually begins when the server device sends a message to the client device to inform the client device that it is capable of communicating using the protocol. In an exemplary embodiment, this message and all subsequent messages may be sent using standard 8-bit ASCII characters. Once the client device determines that the server device is capable of communicating using the protocol, the client device may request the server device to identify what kinds of services the server provides. This request is performed by transmitting a type-command to the server device.
Upon receiving the type-command, the server device responds by transmitting one or more device/service identifiers back to the client device. Each device/service identifier is unique, and represents either a specific device type, such as a thermostat, a door, a pager, a PDA or many others, or a specific service type, such as the ability to raise the temperature of the thermostat or to transmit the messages stored in the pager. Finally, the server device transmits a standard ASCII sequence to signal the last of the device/service identifiers.
After the server device identifies itself as being capable of using the protocol, the client device may issue commands to the server device using the unique service identifiers just described. Any necessary parameters may be passed along as well. If everything operates correctly, the service identified by the command is then provided by the server device. Finally, the server device responds to each such command by sending a status code back to the client device. The status code denotes that either: (a) the requested service was unavailable; (b) the server device was unable to complete the operation; (c) the command contained a syntax error; or (d) that the operation completed successfully.
The protocol also supports xe2x80x9clearningxe2x80x9d new services with which the client is not previously familiar. To invoke this capability, the client device transmits a use-command to the server device to identify the service that the client wishes to learn. Upon receiving the use-command, the server device transmits a service identifier corresponding to the new service and any available parameters. The client device may then invoke the service by sending the service identifier and the requisite parameters.
Another feature of the present invention is the ability to drop into a different, proprietary protocol. By issuing the native-command, the client device can instruct the server device to utilize the existing link to communicate in whatever proprietary protocol is utilized for that link.
Thus, the present invention includes at least four aspects. One aspect of the present invention is a protocol that allows a client device to request a server device to identify what services are provided by the server device and then allows the client device to request one or more of those services to be provided.
Another aspect of the present invention involves the ability of a client device to determine whether any of a wide variety of server devices are capable of communicating with the client device using a standard protocol and then commanding a particular device to carry out a particular function.
A third aspect of the present invention is the structure of the data packets that are transmitted by a server device to uniquely identify the device types emulated by the server device and the services the server device is capable of performing.
A fourth aspect of the invention involves the ability of a client device to determine whether a particular server device is capable of communicating using the SDTP protocol by first establishing communication using any appropriate technology and then determining if further communication is possible using SDTP.